package com.example.d5_generics;

import java.util.ArrayList;

/**
 * 目标：认识泛型
 */
public class Test1 {
    public static void main(String[] args) {
        // 泛型指的是,在定义类,接口,方法时,同时声明了一个或者多个类型变量（如：<E>）,称为泛型类,泛型接口,泛型方法,它们统称为泛型
        // - 泛型的好处：在编译阶段可以避免出现一些非法的数据
        // - 泛型的本质：把具体的数据类型传递给类型变量
        ArrayList list = new ArrayList();
        list.add("java1");
        list.add("java2");
        list.add("java3");
        // list.add(new Cat());

        for (int i = 0; i < list.size(); i++) {
            // 在遍历到第四个元素的时候,会报错,因为无法把一个猫转成String
            String e = (String) list.get(i);
            System.out.println(e);
        }

        System.out.println("-----------------------------------");
        // ArrayList<String> list1 = new ArrayList<String>();
        ArrayList<String> list1 = new ArrayList<>(); // JDK 1.7开始,后面的数据类型可以不声明
        list1.add("java1");
        list1.add("java2");
        list1.add("java3");
        // list1.add(new Cat());

        for (int i = 0; i < list1.size(); i++) {
            String e = list1.get(i);
            System.out.println(e);
        }
    }
}

class Cat {

}



